package com.share.util.common;

import java.util.Base64;

/**
 * Base64 编码解码工具类
 * 使用 Java 8+ 标准 Base64 API
 */
public class Base64Utils {

    private static final Base64.Decoder DECODER = Base64.getDecoder();
    private static final Base64.Encoder ENCODER = Base64.getEncoder();

    /**
     * Base64 解码
     * @param base64 待解码的Base64字符串
     * @return 解码后的字节数组，解码失败返回null
     */
    public static byte[] decode(String base64) {
        try {
            return DECODER.decode(base64);
        } catch (IllegalArgumentException e) {
            // 处理非法Base64字符串
            return null;
        }
    }

    /**
     * Base64 编码
     * @param data 待编码的字节数组
     * @return 编码后的Base64字符串
     */
    public static String encode(byte[] data) {
        return ENCODER.encodeToString(data);
    }

    /**
     * Base64 URL安全编码
     * @param data 待编码的字节数组
     * @return URL安全的Base64字符串
     */
    public static String encodeUrlSafe(byte[] data) {
        return Base64.getUrlEncoder().encodeToString(data);
    }

    /**
     * Base64 URL安全解码
     * @param base64 URL安全的Base64字符串
     * @return 解码后的字节数组，解码失败返回null
     */
    public static byte[] decodeUrlSafe(String base64) {
        try {
            return Base64.getUrlDecoder().decode(base64);
        } catch (IllegalArgumentException e) {
            return null;
        }
    }
}